"""
步骤：
# 0. 导包
# 1. 创建日志器对象
# 2. 设置日志打印级别
    # logging.DEBUG 调试级别
    # logging.INFO 信息级别
    # logging.WARNING 警告级别
    # logging.ERROR 错误级别
    # logging.CRITICAL 严重错误级别
# 3. 创建处理器对象
# 3.1 输出到控制台
# 3.2 输出到日志文件
# 4. 创建格式化器
# 5. 给处理器设置格式化器
# 6. 给日志器添加处理器
# 7. 打印日志
"""

import logging.handlers
import time

# 1. 创建日志器对象
logger = logging.getLogger()
# 2. 设置日志打印级别
# logging.DEBUG 调试级别
# logging.INFO 信息级别
# logging.WARNING 警告级别
# logging.ERROR 错误级别
# logging.CRITICAL 严重错误级别
logger.setLevel(logging.INFO)

# 3. 创建处理器对象
# 输出到控制台
st = logging.StreamHandler()
# 输出到日志文件
# when 是一个字符串，定义了日志切分的间隔时间单位
# interval 是间隔时间单位的个数，指等待多少个 when 的时间后继续进行日志记录
# backupCount 是保留日志的文件个数
fh = logging.handlers.TimedRotatingFileHandler('a.log',
                                               when='midnight',
                                               interval=1,
                                               backupCount=3,
                                               encoding='utf-8')

# 4. 创建格式化器
fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
formatter = logging.Formatter(fmt)
# 5. 给处理器设置格式化器
st.setFormatter(formatter)
fh.setFormatter(formatter)
# 6. 给日志器添加处理器
logger.addHandler(st)
logger.addHandler(fh)

while True:
    # logging.debug('我是一个调试级别的日志')
    logging.info('我是一个信息级别的日志')
    # logging.warning('我是一个警告级别的日志')
    # logging.error('我是一个错误级别的日志')
    # logging.critical('我是一个严重错误级别的日志')
    time.sleep(1)
